package com.lry.basic.lambda;

import java.util.Optional;

public class Demo4 {

    public static void main(String[] args) {

        Optional<String> op = Optional.of("lry");
        Optional<String> op1 = Optional.of("lry");

        System.out.println(op.equals(op1));

        //如果值存在，并且这个值匹配给定的 predicate，
        // 返回一个Optional用以描述这个值，否则返回一个空的Optional。
        Optional<String> filterOp = op.filter(x->x.equals("lry"));
        System.out.println(filterOp == op);

        //如果值存在，返回基于Optional包含的映射方法的值，否则返回一个空的Optional
        Optional<String> flatMapOp = op.flatMap(x-> Optional.of("flatMap "+x));
        System.out.println(flatMapOp.get());

        //map
        System.out.println(op.map(x -> "map " + x).get());


        //如果值存在则使用该值调用 consumer , 否则不做任何事情。
        op.ifPresent(x-> System.out.println("consumer:"+x));

        //如果存在该值，返回值， 否则触发 supply，并返回 supply 调用的结果。
        Optional<String> op4 = Optional.empty();
        System.out.println(op4.orElseGet(() -> "supply"));
    }
}
